#define _CRT_SECURE_NO_WARNINGS 1

#include "PriorityQueue.h"
#include <iostream>
#include <queue>
#include <vector>
#include <functional>

using namespace std;


void test_priority_queue()
{
	vector<int> v = { 3, 4, 2, 7, 8, 6, 5, 9, 0 };
	HQ::priority_queue<int, vector<int>> pq(v.begin(), v.end());

	while (!pq.empty()) {
		cout << pq.top() << " ";
		pq.pop();
	}
	cout << endl;

}

int main()
{
	test_priority_queue();

	return 0;
}

//// 仿函数/函数对象：重载了operator()的类，类的对象可以像函数一样使用
//// 
//struct Func
//{
//	void operator()(int n = 3)
//	{
//		while (n--) {
//			cout << "Func()" << endl;
//		}
//		cout << endl;
//	}
//};
//
//int main()
//{
//	Func f1;
//
//	f1();
//	f1(2);
//	
//
//	return 0;
//}

//#include <iostream>
//#include <string>
//using namespace std;
//
//template<class T>
//class Myless
//{
//public:
//	// 并没有固定参数的方式和返回值，还可以重载，参数个数和返回值是根据需求固定的
//	bool operator()(const T& x, const T& y)
//	{
//		return x < y;
//	}
//};
//
//int main()
//{
//	Myless<string> lessFunc;
//
//	cout << lessFunc("2222", "1111") << endl;
//
//	return 0;
//}